package agenda.contatos.bsi4.database;

import agenda.contatos.bsi4.Contato;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author uli
 */
public class ContatoModel {
    public void inserirPessoa(Statement stm, Contato novoContato) throws SQLException {
        stm.execute("INSERT INTO contato (nome, endereco) VALUES ('" + novoContato.getNome() + "', '" + novoContato.getEndereco() + "')");
        
        ResultSet rs = stm.executeQuery("SELECT LAST_INSERT_ID() as id");

        if(rs.next()) {
            int id_contato = rs.getInt("id");
            
            for (int i = 0; i <= 1; i++) {
                String telefone = novoContato.getTelefone(i);
                
                if (! telefone.equals("Telefone não encontrado")) {
                    stm.execute("INSERT INTO telefone (id_contato, ddd, telefone) VALUES (" + id_contato + ", '" + telefone.split(" ")[0] + "', '" + telefone.split(" ")[1] + "')");
                }
            }
        }
    }

    public Contato[] listarContatos(Statement stm) throws SQLException {
        ResultSet rsRows = stm.executeQuery("SELECT COUNT(*) as linhas FROM contato c LEFT JOIN telefone t ON c.id = t.id_contato");
        int numRows = 0;
        
        if (rsRows.next()) {
            numRows = rsRows.getInt("linhas");
        }
        
        Contato[] listagemContatos = new Contato[numRows];
        
        stm.clearBatch();
        ResultSet rsList = stm.executeQuery("SELECT * FROM contato c LEFT JOIN telefone t ON c.id = t.id_contato");
        int i = 0;
        
        while(rsList.next()) {
            Contato proximoContato = new Contato();
            
            proximoContato.setNome(rsList.getString("nome"));
            proximoContato.setEndereco(rsList.getString("endereco"));
            
            listagemContatos[i] = proximoContato;
            
            i++;
        }
        
        return listagemContatos;
    }
}